#ifndef JBK_AI_GA_INDIVIDUAL_H
#define JBK_AI_GA_INDIVIDUAL_H

//#include <string>

#define INDIVIDUAL_LIFESPAN 10

namespace GA {
class Individual {
public:
	/* dtor */
	virtual ~Individual();

	/* increment age */
	bool incrementAge();

	/* copy */
	virtual Individual* copy() const = 0;
	
	/* mate */
	virtual Individual* mate(const Individual& individual) const = 0;

	/* evaluate */
	virtual void evaluate() = 0;

	/* > */
	virtual bool operator>(const Individual& individual) const = 0;

//	/* toString */
//	virtual std::string toString() const { return ""; }

protected:
	/* ctor */
	Individual();

private:
	int _age;
};
} // GA

#endif	// JBK_AI_GA_INDIVIDUAL_H

